Computationel tankegang

Definition(er) af Computational Tankegang

Oprindeligt stammer begrebet fra bogen Mindstorms af Seymour Papert fra 1980, hvor han anvender det i en enkelt sætning. Paperts brug af begrebet Computational Thinking hænger sammen med hans læringsteori om konstruktionisme og betegner anvendelsen af en computer til modellering, beregning og analyse for derigennem at udvikle problemløsende kompetencer og abstrakt tænkning, dvs. det at tænke gennem anvendelsen af en computer. Han skriver således om hobby-computerklubber og eksperimenter i den retning:

“ Their computers simply did not have the power needed for the most engaging and shareable kinds of activities. Their visions of how to integrate computational thinking into everyday life was insufficiently developed.”  Papert, S: Mindstorms s. 182, 1980 

I 2006 relancerede Jeanette S. Wing begrebet i en ny betydning, nemlig som en samlebetegnelse for en række tankeprocesser, der er i spil, når problemer og deres løsninger konkretiseres i digitale artefakter. (Wing 2006). Wing selv har siden da arbejdet på at forfine begrebet. En definition af begrebet kunne lyde som Cuny, Snyder og Wings (2010): 

“Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent”. 

Siden Wings tekst fra 2006 har begrebet fået stor bevågenhed internationalt og dannet afsæt for en række “skoler”, som har søgt at udfolde det på forskellig vis. 

Af betydelige bidrag til udfoldelser af begrebet kan bl.a. nævnes;

computationelle koncepter

Fundamentale elementer og strukturer, der bruges i programmering, fx sekvenser, løkker, data, betingelser, osv.

computationelle praktikker

Tilgange, som anlægges i en programmeringsproces, fx abstraktion, dekomposition (modularisering), fejlsøgning, m.m.

Computationelle perspektiver

Det syn på verden, som kommer til udtryk gennem computationel problemløsning

Der er generelt en opfattelse af, at CT ligger ud over “programming”, forstået således, at der er tale om en robust kompetence, som er generisk, mens der med programmering menes en specifik færdighed i et eller flere sprog, i vores terminologi altså “kodning”. I sammenhænge, hvor der søges at opøve en generel programmeringsforståelse, er det derfor relevant at fokusere på CT frem for specialiserende forløb i et eller flere programmeringssprog.

Der er fortsat ikke en helt fast definition af begrebet, men der fokuseres gennemgående på problemløsningskompetencer, og begrebet søges ofte defineret gennem forskellige underbegreber og tankeprocesser på samme måde, som Wings oprindelige tekst gjorde:

“While computational thinking draws upon concepts that are fundamental to computing and computer science, it also includes practices such as problem representation, abstraction, decomposition, simulation, verification, and prediction (Sengupta et al., 2013). These practices, in turn, are also central to modelling, reasoning and problem-solving in a large number of scientific and mathematical disciplines (National Research Council, 2010). Einhorn (2012) states that computational thinking develops a variety of skills (logic, creativity, algorithmic thinking, modelling/simulations), involves the use of scientific methodologies and helps develop both inventiveness and innovative thinking.” Bower,M., Wood, L.N et al. s. 54 (2017)

Som ovenstående viser, er det ikke helt enkelt at vælge underbegreber. I de fleste definitioner er der dog fire, som går igen, nemlig: 

dekomposition

Her arbejdes med nedbrydning af et komplekst problem eller en problemløsning i mindre, mere håndterbare dele. Denne tankeproces har stærk sammenhæng med den algoritmiske tænkning og abstraktionen.

abstraktion

Her fokuseres på de vigtigste elementer, idet man ignorerer irrelevante detaljer. Virkelige fænomener abstraheres til modeller og måder at repræsentere disse på som data.

mønstergenkendelse

Mønstergenkendelse anvendes både i udformningen af det enkelte program i form af særlige konstruktioner med gentagelser, fx løkker og procedurer, og på tværs af løsninger, hvor der fokuseres på ligheder mellem problemer og de algoritmer, der kan løse dem.

algoritmisk tænkning

Her arbejdes der grundlæggende med at forstå og udarbejde trinvise løsninger på problemer, dvs. algoritmer.

Computationel tankegang & andre domæner

Derudover er der generelt set en bevægelse mod at se CT som gyldigt i andre domæner end blot datalogiske, som det eksempelvis udtrykkes i Voogt, Fisser et al.:

(...) Programming is but one context for the practice of Computer Science and Computational Thinking. Computer Science is the field and practice from which Computational Thinking skills arose, however is not the only discipline in which these skills can be found or applied. To focus on programming as the primary instantiation of CT, and to expect programming alone to result in more refined thinking, similar to the early research on students’ use of LOGO, would be a mistake both conceptually and pedagogically.” Voogt, J,  Fisser, P, et al: (2015) 

På trods af ambitionen om at gøre CT til et almengyldigt begreb for “multiple domains” i pædagogiske sammenhænge, er det fortsat svært at finde teori og praktiske ressourcer, som ikke kun relaterer sig til datalogiske discipliner: 

“Research on the integration of Computational Thinking in education is still scarce. In particular there is a need to study how CT can be developed in students in disciplines other than Computer Science.” (Voogt, Fisser et al - s. 727)

Når det lykkes, er det desuden oftest kun i forhold til matematik og/eller naturfag. Selvom de findes, så er der generelt mangel på eksempler fra de humanistiske og kreative domæner.

Computationel tankegang i forsøg med teknologiforståelse

I forsøgsvalgfaget tales ikke direkte om CT, men begrebet ligger til grund for seks ud af de i alt ni færdigheds-/vidensområder.

Der fokuseres også på CT i det nye forsøgsfag/faglighed i fag, “Teknologiforståelse”. 

I forsøgsfaget som fag fra 0.-9. kl. er et ud af de i alt fire kompetenceområder “Computational tankegang”. Her udfoldes det i fire færdigheds-/vidensområder med tilhørende trinmål, som i høj grad har sammenhæng med et andet kompetenceområde “Teknologisk handleevne”, der bl.a. omhandler programmering. 

I forsøget med teknologiforståelse som integreret faglighed i andre fag, afprøves delmængder fra grundfaget i 

Her er det interessant at se på, hvor og hvordan kompetenceområdet CT tænkes ind som delmængde. Mens dansk, samfundsfag, billedkunst og håndværk og design ikke har Computationel tankegang med som delmængde (dog har billedkunst og håndværk og design fået tilføjet “programmering og/eller konstruktion”, som kan siges at forudsætte Computationel Tankegang), så optræder kompetenceområdet i matematik som “modellering” og “data, algoritmer og strukturering”, og i fysik/kemi og natur/teknologi som  “computationelle tankegange i naturfag”. Det er altså også i Danmark netop matematik og de to naturfaglige fag, der samtænkes med CT.

Mange forskellige "skoler"

Der er mange aktører, som arbejder med computationel tænkning på forskellig vis. Prøv at undersøge nogle af de nævnte nedenfor og de forskellige ressourcer, som de har udarbejdet.

Skærmbillede 2018-06-23 kl. 22.12.40.png

Kilde: Michael E. Caspersen